package 春招冲刺百题计划;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-05-06
 * Time:21:40
 */

/**
 * 春招冲刺百题计划:658. 找到 K 个最接近的元素
 * 已解答 
 * 中等
 * 相关标签
 * 给定一个 排序好 的数组 arr ，两个整数 k 和 x ，从数组中找到最靠近 x（两数之差最小）的 k 个数。返回的结果必须要是按升序排好的。
 * 整数 a 比整数 b 更接近 x 需要满足：
 *     |a - x| < |b - x| 或者
 *     |a - x| == |b - x| 且 a < b
 * 示例 1：
 * 输入：arr = [1,2,3,4,5], k = 4, x = 3
 * 输出：[1,2,3,4]
 */
public class findClosestElements {
    public List<Integer> findClosestElements(int[] arr, int k, int x) {
        int index = 0;
        int len = arr.length - 1;
        while (len - index >= k) {
            if (x - arr[index] > arr[len] - x) {
                index++;
            }else {
                len--;
            }
        }

        List<Integer> result = new ArrayList<>();
        for (; index <= len ; index++) {
            result.add(arr[index]);
        }
        return result;
    }
}
